package com.bjut.vendormgrsys.web.dto.other;

import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;

/**
 * PositionSearchQueryFilter
 */
@Validated


public class PositionSearchQueryFilter   {
  @JsonProperty("keyword")
  private String keyword = null;

  @JsonProperty("jobType")
  private String jobType = null;

  @JsonProperty("status")
  private String status = null;

  @JsonProperty("positionName")
  private String positionName = null;

  @JsonProperty("enterpriseName")
  private String enterpriseName = null;

  @JsonProperty("datePublished")
  private PositionSearchQueryFilterDatePublished datePublished = null;

  public PositionSearchQueryFilter keyword(String keyword) {
    this.keyword = keyword;
    return this;
  }

  /**
   * Get keyword
   * @return keyword
   **/
  @Schema(description = "")
  
    public String getKeyword() {
    return keyword;
  }

  public void setKeyword(String keyword) {
    this.keyword = keyword;
  }

  public PositionSearchQueryFilter jobType(String jobType) {
    this.jobType = jobType;
    return this;
  }

  /**
   * Get jobType
   * @return jobType
   **/
  @Schema(description = "")
  
    public String getJobType() {
    return jobType;
  }

  public void setJobType(String jobType) {
    this.jobType = jobType;
  }

  public PositionSearchQueryFilter status(String status) {
    this.status = status;
    return this;
  }

  /**
   * Get status
   * @return status
   **/
  @Schema(description = "")
  
    public String getStatus() {
    return status;
  }

  public void setStatus(String status) {
    this.status = status;
  }

  public PositionSearchQueryFilter positionName(String positionName) {
    this.positionName = positionName;
    return this;
  }

  /**
   * Get positionName
   * @return positionName
   **/
  @Schema(description = "")
  
    public String getPositionName() {
    return positionName;
  }

  public void setPositionName(String positionName) {
    this.positionName = positionName;
  }

  public PositionSearchQueryFilter enterpriseName(String enterpriseName) {
    this.enterpriseName = enterpriseName;
    return this;
  }

  /**
   * Get enterpriseName
   * @return enterpriseName
   **/
  @Schema(description = "")
  
    public String getEnterpriseName() {
    return enterpriseName;
  }

  public void setEnterpriseName(String enterpriseName) {
    this.enterpriseName = enterpriseName;
  }

  public PositionSearchQueryFilter datePublished(PositionSearchQueryFilterDatePublished datePublished) {
    this.datePublished = datePublished;
    return this;
  }

  /**
   * Get datePublished
   * @return datePublished
   **/
  @Schema(description = "")
  
    @Valid
    public PositionSearchQueryFilterDatePublished getDatePublished() {
    return datePublished;
  }

  public void setDatePublished(PositionSearchQueryFilterDatePublished datePublished) {
    this.datePublished = datePublished;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    PositionSearchQueryFilter positionSearchQueryFilter = (PositionSearchQueryFilter) o;
    return Objects.equals(this.keyword, positionSearchQueryFilter.keyword) &&
        Objects.equals(this.jobType, positionSearchQueryFilter.jobType) &&
        Objects.equals(this.status, positionSearchQueryFilter.status) &&
        Objects.equals(this.positionName, positionSearchQueryFilter.positionName) &&
        Objects.equals(this.enterpriseName, positionSearchQueryFilter.enterpriseName) &&
        Objects.equals(this.datePublished, positionSearchQueryFilter.datePublished);
  }

  @Override
  public int hashCode() {
    return Objects.hash(keyword, jobType, status, positionName, enterpriseName, datePublished);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class PositionSearchQueryFilter {\n");
    
    sb.append("    keyword: ").append(toIndentedString(keyword)).append("\n");
    sb.append("    jobType: ").append(toIndentedString(jobType)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    positionName: ").append(toIndentedString(positionName)).append("\n");
    sb.append("    enterpriseName: ").append(toIndentedString(enterpriseName)).append("\n");
    sb.append("    datePublished: ").append(toIndentedString(datePublished)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}
